home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / print / hpgl2ps.zip / DXYCOM.C < prev    next >
C/C++ Source or Header  |  1989-08-08  |  3KB  |  162 lines

  1. /* dxycom.c */
  2. #include "defn.h"
  3.  
  4. dxycom(op)
  5. char    op;
  6. {
  7.     int intval;
  8.  
  9.     switch (op)
  10.     {
  11.     case 'H':            /* HOME */
  12.     case 'h':
  13.     break;
  14.  
  15.     case 'D':            /* DRAW */
  16.     case 'd':
  17.     plotps(DRAW);
  18.     break;
  19.  
  20.     case 'M':            /* MOVE */
  21.     case 'm':
  22.     plotps(MOVE);
  23.     break;
  24.  
  25.     case 'I':            /* RELATIVE DRAW */
  26.     case 'i':
  27.     plotps(RDRAW);
  28.     break;
  29.  
  30.     case 'R':            /* RELATIVE MOVE */
  31.     case 'r':
  32.     plotps(RMOVE);
  33.     break;
  34.  
  35.     case 'L':            /* LINE TYPE */
  36.     case 'l':
  37.     linetype(LINETYPE);
  38.     break;
  39.  
  40.     case 'B':            /* LINE SCALE */
  41.     case 'b':
  42.     linetype(LINESCALE);
  43.     break;
  44.  
  45.     case 'X':            /* AXIS */
  46.     case 'x':
  47.     {
  48.         int     p, q, r;
  49.  
  50.         p = rint(getval());
  51.         q = rint(getval());
  52.         r = rint(getval());
  53.         fprintf(stderr, "Warning %c not implemented yet\n", op);
  54.     }
  55.     break;
  56.  
  57.     case 'P':            /* PRINT */
  58.     case 'p':
  59.     textps(TEXT);
  60.     break;
  61.  
  62.     case 'S':            /* ALPHA SCALE */
  63.     case 's':
  64.     {
  65.         int n;
  66.  
  67.         if (SIGNED_NUMERIC)
  68.             n = rint(getval());
  69.         else
  70.         n = 3;
  71.         char_height = (n + 1) * 0.8 * SCALE;
  72.         char_width = (n + 1) * 0.4 * SCALE;
  73.         char_space = (n + 1) * 0.2 * SCALE;
  74.     }
  75.     printf("/%s %g %g %g DefFont\n",
  76.         font, char_width, char_height, char_slant);
  77.     break;
  78.  
  79.     case 'Q':            /* ALPHA ROTATE */
  80.     case 'q':
  81.     intval = rint(getval());
  82.     switch (intval)
  83.     {
  84.     case 0:
  85.         char_angle = 0.0;
  86.         break;
  87.  
  88.     case 1:
  89.         char_angle = 90.0;
  90.         break;
  91.  
  92.     case 2:
  93.         char_angle = 180.0;
  94.         break;
  95.  
  96.     case 3:
  97.         char_angle = 270.0;
  98.         break;
  99.     }
  100.     break;
  101.  
  102.     case 'N':            /* MARK */
  103.     case 'n':
  104.     textps(MARK);
  105.     break;
  106.  
  107.     case 'J':            /* PEN CHANGE */
  108.     case 'j':
  109.     linesize();
  110.     break;
  111.  
  112.     case 'C':            /* CIRCLE */
  113.     case 'c':
  114.     circle(CIRCLE);
  115.     break;
  116.  
  117.     case 'E':            /* RELATIVE CIRCLE */
  118.     case 'e':
  119.     circle(RCIRCLE);
  120.     break;
  121.  
  122.     case 'A':            /* CIRCLE CENTER */
  123.     case 'a':
  124.     circle(CCIRCLE);
  125.     break;
  126.  
  127.     case 'G':            /* ARC + CIRCLE */
  128.     case 'g':
  129.     circle(ACIRCLE);
  130.     break;
  131.  
  132.     case 'K':            /* SEGMENT AND INDICATION LINES FOR CIRCLES */
  133.     case 'k':
  134.     circle(SCIRCLE);
  135.     break;
  136.  
  137.     case 'T':            /* HATCHING */
  138.     case 't':
  139.     rectangle();
  140.     break;
  141.  
  142.     case '^':            /* CALL HP-GL / RD-GL COMMANDS */
  143.     end_draw();
  144.     if ((ch = getc(stream)) != EOF)
  145.         hpglcom(ch);
  146.     break;
  147.  
  148.     default:
  149.     fprintf(stderr, "Warning: %c Unknown DXY command\n", op);
  150.     break;
  151.     }
  152. }
  153.  
  154. int rint(x)
  155. float(x);
  156. {
  157. if( x < 0.)
  158.     return((int)(x+.5)); 
  159. else
  160.     return((int)(x-.5));
  161. }
  162.